ElementUiTree树形控件的使用(增、删)

您所在的位置:网站首页 elementui tree isleaf ElementUiTree树形控件的使用(增、删)

ElementUiTree树形控件的使用(增、删)

2023-03-12 01:01| 来源: 网络整理| 查看: 265

最近开发使用el-tree树形控件时,遇到不少问题,而且问题都是比较常用到的,这里记录一下,仅供参考。

树形页面如下:

代码如下:

ref="tree" :load="loadNode" :props="props" node-key="id" :show-checkbox="false" lazy :highlight-current="true" @node-click="handleNodeClick">

问题一:配置选项

el-tree默认显示的字段key为label、children、isLeaf,但我们在实际开发中我们拿到的数据可能并不是这些字段,这就需要我们去配置,如下:

props: { label: 'name', children: 'children', isLeaf: 'leaf' }

问题二: 异步加载数据

在开发中,我需要用到懒加载数据,即点击当前节点才会去加载当前节点的数据,这里用的是vue,代码如下:

async loadNode (node, resolve) { // 这里第一层和其他层不是同一个接口,需要特殊处理。 if (node.level === 0) { // 操作第一层数据时,刷新节点时使用 this.treeCurrentNode = node // 第一层 const items = await this.$store.dispatch('organization/getCategory') resolve(data) } else { const data = await this.$store.dispatch('organization/getOrgTreeChild', { id: node.data.id }) data.forEach(ite => { ite.leaf = ite.children.length === 0 }) resolve(data) } }

注意:1、loadNode方法接受两个参数node 和 resolve2、node - 对象 - 当前树结点信息3、 resolve - 函数 - 传递当前node对象子结点的数据4、这里通常我们异步方法来加载数据 不用担心resolve调用之前会自动帮我们呈现loading方法

问题三: 新增、删除后刷新固定节点数据

在el-tree进行某种操作之后,比如新增、删除、编辑等,怎么去刷新操作的节点去更新数据?这个官方并没有给出具体的方法,这里找到了一种,仅供参考。

以新增为例,currentNode为当前选中节点的数据,代码如下:

addNew (data) { if (this.type === 'addNext') { // 添加当前节点的下一级 // 根据当前节点的数据,找到当前的树节点 const treeNode = this.$refs.tree.getNode(this.currentNode) treeNode.expanded = true // 设置为展开 treeNode.loaded = false treeNode.loadData() // 刷新当前节点 this.$store.commit('organization/updateCurrentNode', data) } else { // 添加第一级的数据 this.treeCurrentNode.loaded = false this.treeCurrentNode.loadData() this.$store.commit('organization/updateCurrentNode', data) }}

还有一个常用的刷新节点的方法:刷新父节点数据 (删除节点时一般会用到)

deleteItem (data) { const treeNode = this.$refs.tree.getNode(data) treeNode.parent.loaded = false treeNode.parent.loadData() // 刷新父节点数据}

问题四:选中节点设置: setCurrentKey不起作用的问题处理

在新增、删除操作成功之后,我们常常需要重新设置当前选中的节点,el官方给我们提供了方法setCurrentKey,但初次使用这个方法的小白,往往会遇到不起作用的问题。这是因为这个方法要和$nextTick搭配使用,否则数据未挂载,我们的设置并不能生效:

this.$nextTick(() => { this.$refs.tree.setCurrentKey(data.id) })



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3